Qml学习笔记:cpp与qml的交互调用方式

您所在的位置:网站首页 qml 函数 Qml学习笔记:cpp与qml的交互调用方式

Qml学习笔记:cpp与qml的交互调用方式

2024-07-12 17:06| 来源: 网络整理| 查看: 265

Qml学习笔记:cpp与qml的交互调用方式 如何用在cpp中调用qml的方法main.qmlmain.cpp 如何在qml中调用C++的方法函数main.cppmain.qml 如何使用qml调用按钮的信号槽(1)使用默认的clicked()信号(2)qml的按钮中直接注册信号发送到槽函数(QML中设置信号)(3)在qml中设置cpp中的信号槽函数 (4)从录入到qml的方法

如何用在cpp中调用qml的方法 main.qml import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 as Controls Window { visible: true width: 640 height: 480 title: qsTr("Hello World") //Qml通信cpp Controls.Label { objectName: 'labelcpp' text: 'Qml && cpp' font.pointSize: 38 //cpp调用这个函数 function getText() { return text } //加参数后 function getText(info) { return text + info } } } main.cpp #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); QQmlApplicationEngine engine; const QUrl url(QStringLiteral("qrc:/main.qml")); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) { if (!obj && url == objUrl) QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.load(url); //C++调用qml auto root = engine.rootObjects();//拿到所有对象的列表 //找出列表中的第一个 auto labelqml = root.first()->findChild("labelcpp");//名字要与main.qml中的 objectName: 'labelcpp' 相同 QVariant ret; //调用上述实例化的名字,main.qml中对应函数名,将返回到上述定义的ret中 QMetaObject::invokeMethod(labelqml, "getText",Q_RETURN_ARG(QVariant, ret)); //如果有参数要传入调用宏Q_ARG(QVariant,"参数") QMetaObject::invokeMethod(labelqml, "getText",Q_RETURN_ARG(QVariant, ret), Q_ARG(QVariant, " jie")); qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3